software inventions